Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Until now we've used a single fixed API client ID (and key) in our API tests. Now we're adding roles (and want to use various role combinations in tests) we need a more dynamic mechanism.
This introduces a
TestAuthenticationHandler
similar to what we use in other test projects. There's a singletonCurrentApiClientProvider
that's shared by the server and tests that allows setting the current user ID. (It's anAsyncLocal
to allow concurrent tests to set their own user independently.)Given we have two authentication schemes in the API - the API key plus an ID access token - we have to know when our test handler should run vs when it shouldn't (we don't want this
TestAuthenticationHandler
kicking in when we're testing endpoints that require an ID access token). To do that, I've added a header to theHttpClient
used for API key-based calls; the authentication handler looks for that before it runs.